home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
User's Choice Windows CD
/
User's Choice Windows CD (CMS Software)(1993).iso
/
utility3
/
makemdi2.zip
/
FRAME.H
< prev
next >
Wrap
C/C++ Source or Header
|
1992-11-25
|
7KB
|
193 lines
#ifndef CLASS_FRAME
#define CLASS_FRAME "MakeMDI_Frame"
// ==========================================================Purpose
// FRAME.H - Top level application window.
//
// MAKEMDI adaptation of Windows 3.1 SDK MAKEAPP system.
//
// MDI application design based on Chapter 7 of
// "Windows 3: A Developer's Guide" by Jeffrey Richter.
//
// Adaptation developed with permission of the author by
// John F. Holliday, Technisoft Corporation
// Telephone: (515) 472-9803, CompuServe: 71271,634
//
// [DMM] 25-Nov-1992: Fixed crashing on exit
// Also tabified file to tabsize of 4
//
// David M. Miller, Business Visions, Inc.
// Telephone: (212) 747-6118
// CompuServe: 72676,327
// internet: dmiller@hera.sbi.com
// ==========================================================Private
// Window procedure
LRESULT CALLBACK _export Frame_WndProc(HWND, UINT, WPARAM, LPARAM);
// Default message handler
#define Frame_DefProc DefWindowProc
// Instance data structure
typedef struct tagFRAME {
HWND hWnd; // Instance window handle.
HWND hWndClient; // Client window handle.
HWND hWndActiveMDIChild; // Active MDI child window.
WORD wNumSheets; // Number of Sheet windows created.
WORD wNumCharts; // Number of Chart windows created.
HMENU hMenu; /* Menu used when no MDI children are
active. */
DLGPROC fpProcRibbon; // Ribbon dialog procedure address.
HWND hdlgRibbon; // Ribbon modeless dialog box.
BOOL fStatusBarOn; // Is the status bar showing?
BOOL fMDIChildIsMaximized; /* Is the active child
maximized? */
HWND hWndMenuHelp; /* Window that last received a
WM_MENUSELECT message. */
DWORD dwMenuHelp; /* Menu help code placed here by
hWndMenuHelp window. */
} FRAME;
// Instance data pointer access functions
#if defined(M_I86SM) || defined(M_I86MM)
#define Frame_GetPtr(hWnd) (FRAME*)GetWindowWord((hWnd), 0)
#define Frame_SetPtr(hWnd, pfrm) (FRAME*)SetWindowWord((hWnd), 0, (WORD)(pfrm))
#else
#define Frame_GetPtr(hWnd) (FRAME*)GetWindowLong((hWnd), 0)
#define Frame_SetPtr(hWnd, pfrm) (FRAME*)SetWindowLong((hWnd), 0, (LONG)(pfrm))
#endif
// Helper macros
#define GETFRAME(hWnd) ((HWND) (GetParent(GetParent(hWnd))))
// Frame message handler macros
#define HANDLE_FW_MDICHILDDESTROY(hWnd, wParam, lParam, fn) \
((fn)((hWnd)), 0)
#define FORWARD_FW_MDICHILDDESTROY(hWnd, fn) \
(void)(fn)((hWnd), FW_MDICHILDDESTROY, 0, 0L)
#define HANDLE_FW_GETSTATBARRECT(hWnd, wParam, lParam, fn) \
((fn)((hWnd), (LPRECT)(LPARAM)(lParam)), 0)
#define FORWARD_FW_GETSTATBARRECT(hWnd, lpRect, fn) \
(void)(fn)((hWnd), FW_GETSTATBARRECT, 0, (LPARAM)(LPRECT)(lpRect))
#define HANDLE_FW_DRAWSTATUSDIVIDE(hWnd, wParam, lParam, fn) \
((fn)((hWnd), (LPPAINTSTRUCT)(LPARAM)(lParam)), 0)
#define FORWARD_FW_DRAWSTATUSDIVIDE(hWnd, lps, fn) \
(void)(fn)((hWnd), FW_DRAWSTATUSDIVIDE, 0, (LPARAM)(LPPAINTSTRUCT)(lps))
#define HANDLE_FW_RESIZEMDICLIENT(hWnd, wParam, lParam, fn) \
((fn)((hWnd)), 0)
#define FORWARD_FW_RESIZEMDICLIENT(hWnd, fn) \
(void)(fn)((hWnd), FW_RESIZEMDICLIENT, 0, 0L)
#define HANDLE_FW_SETMENUHELP(hWnd, wParam, lParam, fn) \
((fn)((hWnd),(HWND)(WPARAM)(wParam),(DWORD)(LPARAM)(lParam)), 0)
#define FORWARD_FW_SETMENUHELP(hWnd, hWndMenuHelp, dwMenuHelp, fn) \
(void)(fn)((hWnd), FW_SETMENUHELP, (WPARAM)(HWND)(hWndMenuHelp), \
(LPARAM)(DWORD)(dwMenuHelp))
#define HANDLE_FW_GETMENUHELP(hWnd, wParam, lParam, fn) \
(LRESULT)(DWORD)((fn)(hWnd))
#define FORWARD_FW_GETMENUHELP(hWnd, fn) \
(DWORD)(fn)((hWnd), FW_GETMENUHELP, 0, 0L)
// Application message handler macros
#define HANDLE_AW_PAINTMENUHELP(hWnd, wParam, lParam, fn) \
((fn)((hWnd),(LPPAINTSTRUCT)(LPARAM)(lParam)), 0)
#define FORWARD_AW_PAINTMENUHELP(hWnd, ps, fn) \
(void)(fn)((hWnd), AW_PAINTMENUHELP, 0, (LPARAM)(LPPAINTSTRUCT)(ps))
#define HANDLE_AC_PAINTSTATBAR(hWnd, wParam, lParam, fn) \
((fn)((hWnd),(HDC)(WPARAM)(wParam),(LPPAINTSTRUCT)(LPARAM)(lParam)), 0)
#define FORWARD_AC_PAINTSTATBAR(hWnd, hdc, ps, fn) \
(void)(fn)((hWnd), AC_PAINTSTATBAR, 0, (WPARAM)(HDC)(wParam), \
(LPARAM)(LPPAINTSTRUCT)(ps))
// Message handler declarations
BOOL Frame_OnCreate(FRAME * pfrm, CREATESTRUCT FAR * lpCreateStruct);
void Frame_OnDestroy(FRAME * pfrm);
BOOL Frame_OnQueryEndSession(FRAME * pfrm);
void Frame_OnEndSession(FRAME * pfrm, BOOL fEnding);
void Frame_OnClose(FRAME * pfrm);
void Frame_OnSize(FRAME * pfrm, UINT state, int cx, int cy);
void Frame_OnPaint(FRAME * pfrm);
BOOL Frame_OnEraseBkgnd(FRAME * pfrm, HDC hdc);
void Frame_OnActivate(FRAME * pfrm, UINT state, HWND hWndActDeact, BOOL fMinimized);
void Frame_OnSetFocus(FRAME * pfrm, HWND hWndOldFocus);
void Frame_OnKillFocus(FRAME * pfrm, HWND hWndNewFocus);
void Frame_OnKey(FRAME * pfrm, UINT vk, BOOL fDown, int cRepeat, UINT flags);
void Frame_OnChar(FRAME * pfrm, UINT ch, int cRepeat);
void Frame_OnMouseMove(FRAME * pfrm, int x, int y, UINT keyFlags);
void Frame_OnLButtonDown(FRAME * pfrm, BOOL fDoubleClick, int x, int y, UINT keyFlags);
void Frame_OnLButtonUp(FRAME * pfrm, int x, int y, UINT keyFlags);
void Frame_OnInitMenu(FRAME * pfrm, HMENU hMenu);
void Frame_OnInitMenuPopup(FRAME * pfrm, HMENU hMenu, int item, BOOL fSystemMenu);
void Frame_OnCommand(FRAME * pfrm, int id, HWND hWndCtl, UINT codeNotify);
void Frame_OnSysCommand(FRAME * pfrm, WORD cmd, int x, int y);
void Frame_OnNclButtonDown(FRAME * pfrm, BOOL fDoubleClick, int x, int y, UINT codeHitTest);
void Frame_OnMenuSelect(FRAME * pfrm, HMENU hMenu, int item, HMENU hmenuPopup, UINT flags);
void Frame_OnEnterIdle(FRAME * pfrm, WORD source, HWND hWndSource);
void Frame_OnMdiChildDestroy(FRAME * pfrm);
void Frame_OnGetStatBarRect(FRAME * pfrm, LPRECT lpRect);
void Frame_OnDrawStatusDivide(FRAME * pfrm, LPPAINTSTRUCT lpps);
void Frame_OnResizeMdiClient(FRAME * pfrm);
void Frame_OnSetMenuHelp(FRAME * pfrm, HWND hWndMenuHelp, DWORD dwMenuHelp);
DWORD Frame_OnGetMenuHelp(FRAME * pfrm);
void Frame_OnPaintMenuHelp(FRAME * pfrm, LPPAINTSTRUCT lpps);
// ===========================================================Public
BOOL Frame_Initialize(APP * papp);
void Frame_Terminate(APP * papp);
HWND Frame_CreateWindow(LPCSTR lpszText,
int x,
int y,
int cx,
int cy,
HINSTANCE hinst);
void WINAPI Frame_TileVertically(HWND hWndMDIClient);
HWND WINAPI Frame_CreateMDIChild(LPSTR szClassName,
LPSTR szWindowName,
DWORD dwStyle,
short x,
short y,
short nWidth,
short nHeight,
HWND hWndMDIClient,
HANDLE hInstance,
LPARAM lParam);
void WINAPI Frame_ChangeMDIMenu(HWND hWndFrame,
HWND hWndClient,
HMENU hMenuNew,
WORD wMenuID);
//--------------------------------------------------------------End
#endif // !CLASS_FRAME